 function $(ele){
    return document.querySelector(ele)
 }

 /*
    ajax_get请求
    + 参数
        @parma { string } url 表示请求地址
        @parma { object } params 表示请求参数
        @parma { function } success 表示成功时的回调
        @parma { function } error 表示失败时的回调
*/
function ajax_get(options){
    let xhr = new XMLHttpRequest()
    if(options.params){
        let str = '?'
        for(let key in options.params){
            str += `${key}=${options.params[key]}`
            str += '&'
        }
        str = str.slice(0, -1)
        xhr.open('get', options.url+str)
    }else{
        xhr.open('get', options.url)
    }
    xhr.onreadystatechange = ()=>{
        if(xhr.readyState === 4){
            if(xhr.status === 200){
                options.success && options.success(xhr.responseText)
            }else{
                options.error && options.error()
            }
        }
    }
    xhr.send()
}
/*
    ajax_post请求
    + 参数
        @parma { string } url 表示请求地址
        @parma { object } params 表示请求参数
        @parma { function } success 表示成功时的回调
        @parma { function } error 表示失败时的回调
*/
function ajax_post(options){
    let xhr = new XMLHttpRequest()
    xhr.open('post', options.url)
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
    xhr.onreadystatechange = ()=>{
        if(xhr.readyState === 4){
            if(xhr.status === 200){
                options.success && options.success(xhr.responseText)
            }else{
                options.error && options.error()
            }
        }
    }
    if(options.params){
        let str = ''
        for(let key in options.params){
            str += `${key}=${options.params[key]}`
            str += '&'
        }
        str = str.slice(0, -1)
        xhr.send(str)
    }else{
        xhr.send()
    }
}
// Promise版本的ajax
function pAjax(options){
    return new Promise((resolve, reject)=>{
        let xhr = new XMLHttpRequest()
        if(options.params){
            let str = '?'
            for(let key in options.params){
                str += `${key}=${options.params[key]}`
                str += '&'
            }
            str = str.slice(0, -1)
            xhr.open('get', options.url+str)
        }else{
            xhr.open('get', options.url)
        }
        xhr.onreadystatechange = ()=>{
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    resolve(xhr.responseText)
                }else{
                    reject()
                }
            }
        }
        xhr.send()
    })
}


function pAjax2(options){
    return new Promise((resolve, reject)=>{
        let xhr = new XMLHttpRequest()
        xhr.open('post', options.url)
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        xhr.onreadystatechange = ()=>{
            if(xhr.readyState === 4){
                if(xhr.status === 200){
                    resolve(xhr.responseText)
                }else{
                    reject()
                }
            }
        }
        if(options.params){
            let str = ''
            for(let key in options.params){
                str += `${key}=${options.params[key]}`
                str += '&'
            }
            str = str.slice(0, -1)
            xhr.send(str)
        }else{
            xhr.send()
        }
    })
}